"삼성SW" <Baekjoon> #23289 Simulation_온풍기 안녕! c++ (문제를 푸는데 모든 코드를 참고했다.. {동,서,남,북}의 방향을 {0,1,2,3} 으로 설정한다 입력 받아야 하는 값에는 온풍기의 좌표와 방향, 벽의 좌표와 벽이 세워진 방향, 온도를 조사해야하는 좌표가 있다 온도를 조사해야하는 좌표는 vector<pair<int, int>>, 온풍기와 벽은 vector<pair<pair<int, int>, int>>으로 나타낸다 bool wallMap[... simulationbaekjoonalgorithm"삼성SW""삼성SW" <SWEA> #5658 set, deque_보물상자 비밀번호 c++ 1. Input 보물 상자의 뚜껑을 시계방향으로 돌릴 때마다 비밀번호 쌍이 바뀌므로 deque 자료구조를 사용했다 (삽입과 삭제가 빈번하게 일어나지 않으므로 vector를 사용해도 된다) 비밀번호 쌍은 중복을 허용하지 않으므로 set자료구조를 사용했다. 이때 내림차순으로 저장되게 생성한다 (이것 또한 그냥 vector를 사용하고 저장할 때 중복된 값은 저장하지 않는 방법을 사용해도 된다) 2... setDeque"삼성SW"algorithm"삼성SW" <Baekjoon> #17822 Deque, BFS, Simulation_원판 돌리기 c++ ⭕ Solution & Idea 원판을 한 칸씩 돌릴 때마다 원판의 마지막 값이 가장 앞으로 오고, 앞의 값이 마지막 값으로 간다는 점에서 deque 자료 구조를 이용한다 이웃한 원판의 수를 지울 때 bfs, 너비 우선 탐색을 이용하는데 이때 같은 원판 내에서 처음 끝과 마지막 값이 이웃한다는 점을 주의한다 ⭕ 1. roate 시계 방향으로 회전했을 경우 원판의 변화를 보면 가장 마지막 값이... baekjoonalgorithmDeque"삼성SW"simulationBFS"삼성SW" <Baekjoon> #23290 Simulation, BFS, DFS, Backtracking_마법사 상어와 복제 c++ 따라서 물고기 번호 vector<int> fnum, scent_time을 저장하는 맵을 만들어준다 현재 시간을 Time 이라고 두고, 물고기가 상어에게 잡혀 사라질 때 scent_time=Time 을 넣어준다. 그러고 후에 두 번 전 연습에서 생긴 물고기의 냄새가 격자에서 사라질 때, Time-scent_time==2인 경우 scent_time=0으로 만들어주는 방법을 사용한다 1. star... DFSalgorithmBacktracking"삼성SW"simulationBFS"삼성SW" <Baekjoon> #17780 #17837 새로운 게임1,2 c++ map상에는 각 색깔이 저장되어 있고, 각 칸에는 여러 개의 체스가 저장되기 때문에 map에 색을 저장하는 벡터와, 각map에 여러 개의 체스를 저장할 벡터를 만들어야 한다 각각의 체스는 위치 (y,x)와 방향을 가지기 때문에 이 셋을 저장할 구조체를 따로 선언한다 각 체스를 움직일 때, 현재 체스보다 위에 있는 체스들을 함께 움직이기 때문에 현재 움직이려는 체스가 현재 칸에서 몇 번째에 위... beakjoonalgorithm"삼성SW""삼성SW" <Baekjoon> #20058 Simulation, 구현 마법사 상어와 파이어스톰 c++ 참고로 비트 연산자 >>은 2의 거듭제곱으로 나누기, <<은 2의 거듭제곱을 곱할 때 사용한다 다음과 같이 길이(Len)가 4인 경우 돌아가고 난 후 각 맵에 있는 값의 변화를 살펴본다 크게 2개 사각형 둘레(?)의 회전으로 나눌 수 있다. 따라서 돌려야 하는 갯수는 int square=2/Len임을 알 수 있다. 각 사각형마다 기준점의 좌표를 생각해본다 시작점 (1,1)을 (Sy, Sx)라... baekjoonBFS"삼성SW"DFSsimulationalgorithm"삼성SW" <Baekjoon> #19237 구현_어른 상어 struct SHARK 정의 한 칸에는 상어가 뿌린 냄새와 냄새가 사라지기까지 남은 시간이 저장된다 각 map의 냄새의 주인을 저장하는 변수와 남은 시간은 0으로 초기화 한다 위에서 처음 map에 데이터를 입력할 때, 냄새의 주인과 냄새가 사라지기까지 남은 시간은 0으로 초기화를 해두었다 살아있는 모든 상어가 움직인 위치를 조사해 해당 위치에 냄새와 냄새가 사라지기까지 남은 시간을 업데이트 ... baekjoonalgorithm"삼성SW""삼성SW" <Baekjoon> #14888 DFS_연산자 끼워넣기 c++ 삼성 코딩테스트 기출 문제라고 한다 숫자들이 주어지고 그 사이에 적절하게 연산자를 끼워넣어서 최댓값과 최솟값을 구해야 한다. 주어진 연산자를 모두 다 썼을 때의 sum을 maxSum, minSum 과 비교해서 최댓값, 최솟값을 구해준다. e.g. num={1,2,3,4,5,6}, (+)2개, (-)1개, (x)1개, (÷)1개인 경우 1 ⓐ 2 ⓑ 3 ⓒ 4 ⓓ 5 ⓔ 6 에서 각 ⓐⓑⓒⓓⓔ... algorithmDFSBacktrackingbaekjoon"삼성SW""삼성SW" <Baekjoon> #14500 DFS_테트로미노 c++ 처음에는 문제를 보고 모든 테트로미노의 모양을 구해야 하는 아이디어밖에 떠오르지 않았다. 그래서 다른 사람들의 풀이를 많이 참고했다. (실제로 어떤 사람은 모든 경우의 수를 구한 사람도 보았다) 먼저 테트로미노를 보면 ㅜ 이 모양 이외에는 깊이가 4인 모양임을 알 수 있다 (테트로미노를 대칭시키고 회전을 시킬 수 있다고 했으므로) DFS 함수 DFS 함수의 파라미터로는 int y, int x... algorithmDFSBacktrackingbaekjoon"삼성SW""삼성SW" 격자판의 숫자 이어 붙이기 문제 : 2819 이 문제에서 dfs(ny, nx, depth + 1, s + to_string(map[ny][nx]));를 dfs(ny, nx, depth + 1, s += to_string(map[ny][nx]));해서 버그가 있었다. DFS문제 스타일. DFS에서 방문기록 체크 안하는 스타일의 문제... "삼성SW""삼성4단계"알고리즘DFS"삼성4단계" <Baekjoon> #12100 BFS, Brute Force_2048(Easy) c++ 움직일 수 있는 모든 경우의 수를 selectDir[] 배열에 넣고 크기가 5가 되었을 때 각 순서대로 이동해서 최댓값을 찾아본다. 먼저 selectDir[]에 {0,0,0,0,0}이 저장되었을 때 이 크기가 5가 되었으므로startGame()함수를 호출하여 각 방향마다 차례대로 움직인다. 끝나고 나면 다시 {0,0,0,0,1}이 저장되어 startGame()을 호출하여 각 방향마다 차례대로... algorithmBFSbruteforcebaekjoon"삼성SW""삼성SW" <Baekjoon> #20056 마법사 상어와 파이어볼 c++ 1. init 먼저 Fireball에 저장되는 값이 많기 때문에 구조체를 이용한다 map의 한 칸에 여러개의 fireball이 저장될 수 있기 때문에 한 칸에 여러개의 fireball이 저장될 수 있게 만들어 준다 각 방향을 지정해주고 홀수, 짝수인 경우의 수도 지정해준다 (마지막에 합쳐지는 fireball의 방향을 정할 때 사용하기 위해) 2. input fireball data fireb... algorithm"삼성SW""삼성SW" 2일차 - Ladder2 이문제 2시간넘게 왜틀린지 모르겟음. 10X10배열에서 내가 인풋 넣은건 이상없으나, 그이상 진행이 되지 않음... 답이 다르게 나온다. 백트래킹으로 다시 풀어봐야 한다 디버깅 할때 100x100으로 해야되는데 cmd창에 올라가질 않는다... 일단 실패했음.... "삼성SW""삼성4단계"BFS알고리즘"삼성4단계"
<Baekjoon> #23289 Simulation_온풍기 안녕! c++ (문제를 푸는데 모든 코드를 참고했다.. {동,서,남,북}의 방향을 {0,1,2,3} 으로 설정한다 입력 받아야 하는 값에는 온풍기의 좌표와 방향, 벽의 좌표와 벽이 세워진 방향, 온도를 조사해야하는 좌표가 있다 온도를 조사해야하는 좌표는 vector<pair<int, int>>, 온풍기와 벽은 vector<pair<pair<int, int>, int>>으로 나타낸다 bool wallMap[... simulationbaekjoonalgorithm"삼성SW""삼성SW" <SWEA> #5658 set, deque_보물상자 비밀번호 c++ 1. Input 보물 상자의 뚜껑을 시계방향으로 돌릴 때마다 비밀번호 쌍이 바뀌므로 deque 자료구조를 사용했다 (삽입과 삭제가 빈번하게 일어나지 않으므로 vector를 사용해도 된다) 비밀번호 쌍은 중복을 허용하지 않으므로 set자료구조를 사용했다. 이때 내림차순으로 저장되게 생성한다 (이것 또한 그냥 vector를 사용하고 저장할 때 중복된 값은 저장하지 않는 방법을 사용해도 된다) 2... setDeque"삼성SW"algorithm"삼성SW" <Baekjoon> #17822 Deque, BFS, Simulation_원판 돌리기 c++ ⭕ Solution & Idea 원판을 한 칸씩 돌릴 때마다 원판의 마지막 값이 가장 앞으로 오고, 앞의 값이 마지막 값으로 간다는 점에서 deque 자료 구조를 이용한다 이웃한 원판의 수를 지울 때 bfs, 너비 우선 탐색을 이용하는데 이때 같은 원판 내에서 처음 끝과 마지막 값이 이웃한다는 점을 주의한다 ⭕ 1. roate 시계 방향으로 회전했을 경우 원판의 변화를 보면 가장 마지막 값이... baekjoonalgorithmDeque"삼성SW"simulationBFS"삼성SW" <Baekjoon> #23290 Simulation, BFS, DFS, Backtracking_마법사 상어와 복제 c++ 따라서 물고기 번호 vector<int> fnum, scent_time을 저장하는 맵을 만들어준다 현재 시간을 Time 이라고 두고, 물고기가 상어에게 잡혀 사라질 때 scent_time=Time 을 넣어준다. 그러고 후에 두 번 전 연습에서 생긴 물고기의 냄새가 격자에서 사라질 때, Time-scent_time==2인 경우 scent_time=0으로 만들어주는 방법을 사용한다 1. star... DFSalgorithmBacktracking"삼성SW"simulationBFS"삼성SW" <Baekjoon> #17780 #17837 새로운 게임1,2 c++ map상에는 각 색깔이 저장되어 있고, 각 칸에는 여러 개의 체스가 저장되기 때문에 map에 색을 저장하는 벡터와, 각map에 여러 개의 체스를 저장할 벡터를 만들어야 한다 각각의 체스는 위치 (y,x)와 방향을 가지기 때문에 이 셋을 저장할 구조체를 따로 선언한다 각 체스를 움직일 때, 현재 체스보다 위에 있는 체스들을 함께 움직이기 때문에 현재 움직이려는 체스가 현재 칸에서 몇 번째에 위... beakjoonalgorithm"삼성SW""삼성SW" <Baekjoon> #20058 Simulation, 구현 마법사 상어와 파이어스톰 c++ 참고로 비트 연산자 >>은 2의 거듭제곱으로 나누기, <<은 2의 거듭제곱을 곱할 때 사용한다 다음과 같이 길이(Len)가 4인 경우 돌아가고 난 후 각 맵에 있는 값의 변화를 살펴본다 크게 2개 사각형 둘레(?)의 회전으로 나눌 수 있다. 따라서 돌려야 하는 갯수는 int square=2/Len임을 알 수 있다. 각 사각형마다 기준점의 좌표를 생각해본다 시작점 (1,1)을 (Sy, Sx)라... baekjoonBFS"삼성SW"DFSsimulationalgorithm"삼성SW" <Baekjoon> #19237 구현_어른 상어 struct SHARK 정의 한 칸에는 상어가 뿌린 냄새와 냄새가 사라지기까지 남은 시간이 저장된다 각 map의 냄새의 주인을 저장하는 변수와 남은 시간은 0으로 초기화 한다 위에서 처음 map에 데이터를 입력할 때, 냄새의 주인과 냄새가 사라지기까지 남은 시간은 0으로 초기화를 해두었다 살아있는 모든 상어가 움직인 위치를 조사해 해당 위치에 냄새와 냄새가 사라지기까지 남은 시간을 업데이트 ... baekjoonalgorithm"삼성SW""삼성SW" <Baekjoon> #14888 DFS_연산자 끼워넣기 c++ 삼성 코딩테스트 기출 문제라고 한다 숫자들이 주어지고 그 사이에 적절하게 연산자를 끼워넣어서 최댓값과 최솟값을 구해야 한다. 주어진 연산자를 모두 다 썼을 때의 sum을 maxSum, minSum 과 비교해서 최댓값, 최솟값을 구해준다. e.g. num={1,2,3,4,5,6}, (+)2개, (-)1개, (x)1개, (÷)1개인 경우 1 ⓐ 2 ⓑ 3 ⓒ 4 ⓓ 5 ⓔ 6 에서 각 ⓐⓑⓒⓓⓔ... algorithmDFSBacktrackingbaekjoon"삼성SW""삼성SW" <Baekjoon> #14500 DFS_테트로미노 c++ 처음에는 문제를 보고 모든 테트로미노의 모양을 구해야 하는 아이디어밖에 떠오르지 않았다. 그래서 다른 사람들의 풀이를 많이 참고했다. (실제로 어떤 사람은 모든 경우의 수를 구한 사람도 보았다) 먼저 테트로미노를 보면 ㅜ 이 모양 이외에는 깊이가 4인 모양임을 알 수 있다 (테트로미노를 대칭시키고 회전을 시킬 수 있다고 했으므로) DFS 함수 DFS 함수의 파라미터로는 int y, int x... algorithmDFSBacktrackingbaekjoon"삼성SW""삼성SW" 격자판의 숫자 이어 붙이기 문제 : 2819 이 문제에서 dfs(ny, nx, depth + 1, s + to_string(map[ny][nx]));를 dfs(ny, nx, depth + 1, s += to_string(map[ny][nx]));해서 버그가 있었다. DFS문제 스타일. DFS에서 방문기록 체크 안하는 스타일의 문제... "삼성SW""삼성4단계"알고리즘DFS"삼성4단계" <Baekjoon> #12100 BFS, Brute Force_2048(Easy) c++ 움직일 수 있는 모든 경우의 수를 selectDir[] 배열에 넣고 크기가 5가 되었을 때 각 순서대로 이동해서 최댓값을 찾아본다. 먼저 selectDir[]에 {0,0,0,0,0}이 저장되었을 때 이 크기가 5가 되었으므로startGame()함수를 호출하여 각 방향마다 차례대로 움직인다. 끝나고 나면 다시 {0,0,0,0,1}이 저장되어 startGame()을 호출하여 각 방향마다 차례대로... algorithmBFSbruteforcebaekjoon"삼성SW""삼성SW" <Baekjoon> #20056 마법사 상어와 파이어볼 c++ 1. init 먼저 Fireball에 저장되는 값이 많기 때문에 구조체를 이용한다 map의 한 칸에 여러개의 fireball이 저장될 수 있기 때문에 한 칸에 여러개의 fireball이 저장될 수 있게 만들어 준다 각 방향을 지정해주고 홀수, 짝수인 경우의 수도 지정해준다 (마지막에 합쳐지는 fireball의 방향을 정할 때 사용하기 위해) 2. input fireball data fireb... algorithm"삼성SW""삼성SW" 2일차 - Ladder2 이문제 2시간넘게 왜틀린지 모르겟음. 10X10배열에서 내가 인풋 넣은건 이상없으나, 그이상 진행이 되지 않음... 답이 다르게 나온다. 백트래킹으로 다시 풀어봐야 한다 디버깅 할때 100x100으로 해야되는데 cmd창에 올라가질 않는다... 일단 실패했음.... "삼성SW""삼성4단계"BFS알고리즘"삼성4단계"